package com.itjin.health.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itjin.health.domain.dto.QrCodeRequest;
import com.itjin.health.domain.entity.GroupChatQrCode;
import com.itjin.health.domain.vo.QrCodeVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 群聊二维码服务接口
 */
public interface GroupChatQrCodeService extends IService<GroupChatQrCode> {

  /**
   * 上传群聊二维码
   *
   * @param qrCodeImage 二维码图片文件
   * @param expiryTime  过期时间
   * @param status      状态
   * @param userId      上传用户ID
   * @return 上传后的二维码信息
   */
  GroupChatQrCode uploadQrCode(MultipartFile qrCodeImage, String expiryTime, String status, Integer userId);

  /**
   * 更新群聊二维码
   *
   * @param qrCodeRequest 二维码请求参数
   * @param userId        操作用户ID
   * @return 更新结果
   */
  boolean updateQrCode(QrCodeRequest qrCodeRequest, Integer userId);

  /**
   * 删除群聊二维码
   *
   * @param qrCodeId 二维码ID
   * @param userId   操作用户ID
   * @return 删除结果
   */
  boolean deleteQrCode(Integer qrCodeId, Integer userId);

  /**
   * 获取群聊二维码详情
   *
   * @param qrCodeId 二维码ID
   * @return 二维码详情
   */
  GroupChatQrCode getQrCode(Integer qrCodeId);

  /**
   * 分页获取群聊二维码列表
   *
   * @param current 当前页
   * @param size    每页大小
   * @param status  状态筛选
   * @return 二维码列表
   */
  Page<GroupChatQrCode> listQrCodes(long current, long size, String status);

  /**
   * 获取最新有效的群聊二维码
   *
   * @return 最新有效的二维码
   */
  GroupChatQrCode getLatestActiveQrCode();

  /**
   * 将二维码实体转换为视图对象
   *
   * @param qrCode 二维码实体
   * @return 二维码视图对象
   */
  QrCodeVO getQrCodeVO(GroupChatQrCode qrCode);

  /**
   * 将二维码实体列表转换为视图对象列表
   *
   * @param qrCodes 二维码实体列表
   * @return 二维码视图对象列表
   */
  List<QrCodeVO> getQrCodeVOList(List<GroupChatQrCode> qrCodes);
}